---
title: SAIF.Services.Imaging.Import architecture
summary: Architectural responsibilities, boundaries, and interaction patterns.
status: draft
owner: SAIF Documentation
last_reviewed: 2026-08-21
library: SAIF.Services.Imaging.Import
reference_type: embedded
---

# SAIF.Services.Imaging.Import architecture

`SAIF.Services.Imaging.Import` is a shared contract / data-transfer library that defines the imaging-import
index vocabulary — document types, sub-types, and the full index field set (claim, policy, legal case,
task-routing, and document-classification fields) — and produces the canonical `KEY=value` wire representation of
that data for the downstream OnBase imaging import / xPresso document-distribution process. The library contains a
single serializable class, `clsImageImport`, and carries no business logic beyond output shaping.*

## Responsibilities
- Define the imaging-import index vocabulary via public constants (`OnBaseType*`, `OnBaseSubType*`) and the
  `clsImageImport` property set.
- Hold caller-populated index metadata spanning claim, policy, agency/group, legal, and task-routing domains.
- Serialize populated metadata into a newline-delimited `KEY=value` block via `ToString()`, applying the field
  emission rules `BR-IMG-001` through `BR-IMG-007`.
- Supply construction-time defaults (`BR-IMG-008`) so callers that set only claim/document identifiers still
  produce a valid, indexable claim-file import request.*

## Component boundaries
- **`clsImageImport` (data-transfer type):** the sole component in the library. It owns the field vocabulary and
  the serialization contract; it performs no I/O and has no outbound coupling to other repository projects or
  external services.*
- **Transport boundary (owned outside this library):** the `ToString()` output is the integration contract with
  the OnBase imaging import / xPresso distribution process. All transport — MSMQ `BinaryMessageFormatter` message
  construction or the `distributeDocument` xPresso web-service call — is owned by
  `SAIF.Services.Printing/clsPrint.vb`, not by this library.*

## Interaction model
- A consumer (`clsPrint.ImportInfo` in `SAIF.Services.Printing`) lazily instantiates `clsImageImport`, letting the
  property initializers apply the `BR-IMG-008` defaults, and returns the instance for the caller to populate.
- The consumer reads `clsImageImport.ToString()` (via `clsPrint.ImportInfoString`) to obtain the serialized
  `KEY=value` block, then either attaches the instance to `PrintRequest.Importinfo` for MSMQ delivery or passes the
  serialized string to the xPresso `distributeDocument` web-service call.
- `LegalMaintenance/LegalMaintenance.vbproj` holds a `<ProjectReference>` to this library so the assembly is
  deployed alongside the `SAIF.Services.Printing` chain, but no `.vb`/`.aspx` file in the web project references
  `clsImageImport` by name.*
- The `<Serializable()>` attribute on `clsImageImport` makes binary MSMQ round-tripping an implicit versioning
  constraint: adding or renaming fields changes both the binary payload and the `KEY=value` text contract.*

## Architecture diagram
The following diagram shows how this library's data-transfer type is populated and consumed by the printing
service before reaching the imaging/distribution destinations.

```mermaid
flowchart TD
	A["LegalMaintenance web<br>application"] --> B["SAIF.Services.Printing -<br>clsPrint"]
	B --> C["SAIF.Services.Imaging.Import<br>- clsImageImport"]
	C -->|ToString KEY=value block| B
	B -->|MSMQ BinaryMessageFormatter| D["MSMQ print/distribution<br>queue"]
	B -->|distributeDocument call| E[xPresso web service]
```

## Sequence diagram
The following diagram shows the primary request/response sequence for producing the imaging-import wire
representation.

```mermaid
sequenceDiagram
	participant Consumer as clsPrint (SAIF.Services.Printing)
	participant Descriptor as clsImageImport
	participant Xpresso as xPresso web service
	Consumer->>Descriptor: New clsImageImport (defaults applied, BR-IMG-008)
	Consumer->>Descriptor: set property values (claim/policy/legal/task fields)
	Consumer->>Descriptor: ToString()
	Descriptor-->>Consumer: KEY=value block (BR-IMG-001..BR-IMG-007 applied)
	Consumer->>Xpresso: distributeDocument(ImportInfoString)
	Xpresso-->>Consumer: distribution result
```

## Design constraints
- No exception handling, validation, or null guards exist in `ToString()`; `Nothing`-valued string properties
  append as empty text and there is no failure path.*
- The emitted key order is fixed and not alphabetical (e.g., `SLevel` is emitted after `ReceivedDate`); consumers
  and downstream imaging configuration must treat the order as part of the contract.*
- The field set spans multiple domains (claim, policy, agency/group, legal, task) accreted over time (in-source
  comments span 2007–2018) rather than being modelled into sub-objects.*
- The library depends solely on `System`/`Microsoft.VisualBasic` BCL intrinsics; declared NuGet packages
  (`SAIF.BOF.Framework`, `SAIF.Framework.Common`, `SAIF.HashUtil`, `SAIF.Web.API.Clients`,
  `Oracle.ManagedDataAccess`, `Newtonsoft.Json`, `RestSharp`, and related transitive packages) are inherited,
  solution-uniform references not used by the compiled source.*

## Related documentation
- [Index](index.md)
- [Overview](overview.md)
- [Dependencies](dependencies.md)
- [Operations and processes](operations-processes.md)
- [Business rules](business-rules.md)
- [API reference](api/index.md)

## Sources
- SAIF.Services.Imaging.Import/clsImageImport.vb
- SAIF.Services.Imaging.Import/SAIF.Services.Imaging.Import.vbproj
- SAIF.Services.Imaging.Import/AssemblyInfo.vb
- SAIF.Services.Imaging.Import/packages.config
- SAIF.Services.Imaging.Import/App.config
- SAIF.Services.Imaging.Import/Web.config
- SAIF.Services.Imaging.Import/SAIF.Services.Imaging.Import.vbproj
- SAIF.Services.Printing/clsPrint.vb
- LegalMaintenance/LegalMaintenance.vbproj
